<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>

    <script>
        // ES5
        // // map和对象类似.但是map的 key能够接受任意值
        // //私有数据的保护
        // const Person = (function () {
        //     let _gender = [];

        //     function P(name, gender) {
        //         this.name = name;
        //         _gender.push({
        //             obj: this,
        //             gender: gender,
        //         });
        //     }
        //     P.prototype.getGender = function () {
        //         return _gender.find(o => o.obj == this);
        //     }
        //     P.prototype.setGender = function (newGender) {
        //         // 限制newGender的值范围,比如传入男或者女
        //         // _gender=newGender;
        //         _gender.forEach(o => {
        //             if (this == o.obj) {
        //                 o.gender = newGender;
        //             }
        //         });
        //     }
        //     P.getGenders = function () {
        //         return _gender;
        //     }
        //     return P;
        // })();
        // let P1 = new Person("莫套", "男");
        // P1.setGender('女');
        // console.log(P1.getGender());



        // map和对象类似.但是map的 key能够接受任意值
        //私有数据的保护
        const Person = (function () {
            let _gender = new Map();

            function P(name, gender) {
                this.name = name;
                _gender.set(this, gender);
            }
            P.prototype.getGender = function () {
                return _gender.get(this);
            }
            P.prototype.setGender = function (newGender) {
                // 限制newGender的值范围,比如传入男或者女
                // _gender=newGender;
                _gender.set(this, newGender);
            }
            P.getGenders = function () {
                return _gender;
            }
            return P;
        })();
        let P1 = new Person("莫套", "男");
        P1.setGender('女');
        console.log(P1.getGender());
    </script>
</body>

</html>